package com.sugon.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sugon.modules.device.model.dto.DevMaintenancePreviewItemDTO;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 设备维护工单数据实体
 * 表名 DEV_MAINTENANCE_TICKET
 *
 * @author sugon
 * @date 2020-08-12 14:37:07
 */
@Data
public class DevAmTicketEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 年度
     */
    private Integer yearly;

    /**
     * 当前工单执行周是全年第几周
     */
    private Integer weekOfYear;
    /**
     * 维护单号
     */
    private String repairCode;

    /**
     * 工单类别，具体取值参照DevMaintenanceTicketType
     */
    private String ticketType;

    /**
     * 是否已催办催办
     */
    private Integer isUrged;

    /**
     * 实施人ID
     */
    private String executor;

    /**
     * 实施人姓名
     * 关联查询获取
     */
    private String executorName;

    /**
     * 执行状态
     * <p>
     * 取值自DevMaintenanceTicketStatus
     */
    private Integer status;

    /**
     * 截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;

    /**
     * 最终截止时间
     * 如果工单不延期，则等于endTime
     * 如果工单延期，则等于延期申请后的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date finalEndTime;

    /**
     * 取消申请时间
     */
    private Date cancelTime;

    /**
     * 取消人员
     */
    private String canceller;

    /**
     * 审批时间
     */
    private Date approveTime;

    /**
     * 审批人
     */
    private String approver;

    /**
     * 是否删除
     */
    private Integer delFlag;

    /**
     * 工单生成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date gmtCreate;

    /**
     * 所属车间ID
     */
    private String workshop;
    /**
     * 设备ID
     */
    private String devId;
    /**
     * $column.comments
     */
    private String id;

    /**
     * 派工时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dispatchTime;

    /**
     * 备注，此处为取消原因
     */
    private String remark;

    public DevAmTicketEntity() {
        this.ticketType = "PLAN";
    }

    public DevAmTicketEntity(DevMaintenancePreviewItemDTO devMaintenancePreviewItem) {
        this.ticketType = "PLAN";
        this.devId = devMaintenancePreviewItem.getDevId();
        this.workshop = devMaintenancePreviewItem.getWorkshopId();
    }

}
